package view;



import controller.MainController;
import dao.UserDAO;
import model.User;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * 登录界面类，提供用户登录功能
 */
public class LoginFrame extends JFrame {
    private JTextField usernameField;    // 用户名输入框
    private JPasswordField passwordField; // 密码输入框
    private JButton loginButton;         // 登录按钮
    private JButton registerButton;      // 注册按钮
    private UserDAO userDAO;             // 用户数据访问对象
    private JButton adminLoginButton;    // 管理员登录按钮


    /**
     * 构造方法，初始化登录界面
     */
    public LoginFrame() {
        userDAO = new UserDAO();

        // 设置窗口标题和大小
        setTitle("在线购物系统 - 登录");
        setSize(400, 350);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        // 创建面板并设置布局
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(5, 2, 10, 10));
        panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));

        // 创建用户名标签和输入框
        JLabel usernameLabel = new JLabel("用户名:");
        usernameField = new JTextField();

        // 创建密码标签和输入框
        JLabel passwordLabel = new JLabel("密码:");
        passwordField = new JPasswordField();

        // 创建登录按钮并添加事件监听器
        loginButton = new JButton("登录");
        loginButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String username = usernameField.getText().trim();
                String password = new String(passwordField.getPassword());

                if (username.isEmpty() || password.isEmpty()) {
                    JOptionPane.showMessageDialog(LoginFrame.this, "用户名和密码不能为空！", "错误", JOptionPane.ERROR_MESSAGE);
                    return;
                }

                // 验证用户登录
                User user = userDAO.validateLogin(username, password);
                if (user != null) {
                    // 登录成功，跳转到主界面
                    dispose(); // 关闭登录界面
                    new MainFrame(user); // 打开主界面
                } else {
                    JOptionPane.showMessageDialog(LoginFrame.this, "用户名或密码错误！", "错误", JOptionPane.ERROR_MESSAGE);
                }
            }
        });

        // 创建注册按钮并添加事件监听器
        registerButton = new JButton("注册");
        registerButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 打开注册界面
                new RegisterFrame();
            }
        });

        // 创建管理员登录按钮并添加事件监听器
        adminLoginButton = new JButton("管理员登录");
        adminLoginButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 打开管理员登录界面
                dispose(); // 关闭当前登录界面
                MainController.openAdminLogin(); // 打开管理员登录界面
            }
        });

        // 将组件添加到面板
        panel.add(usernameLabel);
        panel.add(usernameField);
        panel.add(passwordLabel);
        panel.add(passwordField);
        panel.add(loginButton);
        panel.add(registerButton);
        panel.add(new JLabel()); // 添加一个空标签占位
        panel.add(adminLoginButton); // 添加管理员登录按钮

        // 将面板添加到窗口
        add(panel);

        // 显示登录界面
        setVisible(true);

    }

    public static void main(String[] args) {
        // 创建并显示登录界面
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new LoginFrame().setVisible(true);


            }
        });
    }
}